package java学习.实训.day03;

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
import java.util.function.Consumer;

/**
 * **************
 * 项目名称: 蓝桥杯 <br/>
 * 文件名称:  <br/>
 * 文件描述: 这里添加您的类文件描述，说明当前文件要包含的功能。 <br/>
 * 文件创建：刘世锦 <br/>
 * 创建时间: 2022/6/9 <br/>
 *
 * @version v1.0 <br/>
 * @update [序号][日期YYYY-MM-DD][更改人姓名][变更描述]<br/>
 * *************
 */
public class day03 {
    /*
    1.需求：设计一个方法，获取用户输入的数据。要求用户必须输入0~9之间的数，如果不是，让用户重新输入，直到用户输入的内容合法。
    2.需求：设计一个方法计算数字是几位数。需要有参数和返回值，参数就是要计算位数的数字，返回值是位数。
     */
    public static void main1(String[] args) {
//        int a =    prinUser();
//        System.out.println(calculateNumber(0));
        Random r = new Random();
        int num =     r.nextInt(9-0+1)+0;
        System.out.println( "num是"+num);
        recordNum(num);
    }

    public static void main2(String[] args) {
        printTriangle(4,10,'#');
//        Consumer
    }

    public static void main(String[] args) {
        int []arr = {10,18,23,41,52,66,34,12};
//        bubbleSort(arr);
        SelectSort(arr);
        System.out.println(Arrays.toString(arr));
    }
    /*
    需求：设计一个方法，实现数组排序（冒泡）。void bubbleSort(int[] arr)
     */
    public static void bubbleSort(int[] arr){
        int n = arr.length-1;
        int t = 0;
        for (int i = 0; i < n ; i++) {
            for (int j = 0; j < n - i; j++) {
                if(arr[j]>arr[j+1]){
                    t = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = t;
                }
            }
        }
    }
    public static void SelectSort(int[] arr){
        int n = arr.length-1;
        for (int i = 0; i < n ; i++) {

            int num = i;  // 确定i之前已经排好序了，现在从i开始：
            for (int j = i+1; j <=n ; j++) {
                if (arr[j]<arr[num]){
                    num = j;
                }
            }
            int t = arr[i];
            arr[i] = arr[num];
            arr[num] = t;
        }


    }
    /*
    设计一个方法打印等腰三角形，要求等腰三角形的行数、三角形与左边间距，以及构成三角型的符号可以由调用者控制。
     */
    public static void printTriangle(int row,int space,char symbol){

        for (int i = 0; i <row; i++) {
            for (int j = 0; j <row-i+space; j++) {
                System.out.print (" ");
            }
            for (int k = 0; k <i*2+1; k++) {
                System.out.print (symbol);
            }
            System.out.println();
        }
        for (int i = 1; i <=4; i++) {
            for (int k = 1; k <= 4-i+5; k++) {//控制空格的个数
                System.out.print("%");
            }
            for (int j = 1; j <= 2 * i - 1; j++) {//控制打印的图形
                System.out.print("@");
            }
            System.out.println();
        }
    }

    private static int prinUser() {
        Scanner sc = new Scanner(System.in);
        int i = sc.nextInt();
        while (i>9||i<0){
            System.out.println("重新输入");
            i = sc.nextInt();
        }
        System.out.println(i);
        return i;
    }
    private static int  calculateNumber(int num){
       int count = 0;
        do {
            num = num/10;
            count++;
        }while (num!=0);
        return count;
    }

    /*  记录
    1.需求：设计一个方法，实现数7游戏，并调用方法测试结果是否正确。不要只能数7，实现数n游戏，n是一个0~9之间的数。
     */
    private static void   recordNum(int num){
        for (int i = 1; i <= 100; i++) {
            if (i%num==0||i%10==num||i/10%10==num){
                System.out.print("过 ");
            }else {
                System.out.print(i+" ");
            }
        }

    }
}
